package paquete;

/** Pieza alfil **/
//clase que hereda de pieza e implementa la interfaz movimiento
public class alfil extends pieza implements movimiento {

	public alfil(char caracter, int posx, int posy, int maxx, int maxy,
			int color, boolean espieza) {
		super(caracter, posx, posy, maxx, maxy, color, espieza);
	}

	//movimientos validos para alfiles
	@Override
	public boolean movimientosvalidos(int x1, int y1, int x2, int y2,
			pieza[][] tablero, boolean jaque, int contador, int turno) {

		int s1 = 1;
		int s2 = 1;
		
		//se verifica las conidiciones establecidas en la clase pieza 
		//de la cual esta heredando alfil
		if (!super.movimientosvalidos(x1, y1, x2, y2, tablero, jaque, contador,
				turno))
			return false;
		
		//movimiento validos para el alfil
		if (x1 != x2 && y1 != y2) {
			if (Math.abs(x1 - x2) == Math.abs(y1 - y2)) {
				for (int i = 1; i <= Math.abs(x1 - x2); i++) {
					s1 = x2 - x1 > 0 ? 1 : -1;
					s2 = y2 - y1 > 0 ? 1 : -1;
					if (tablero[x1 + i * s1][y1 + i * s2].getespiza()) {
						if (i != Math.abs(x1 - x2))
							return false;
						else if (tablero[x1 + i * s1][y1 + i * s2].getcolor() == turno)
							return false;
						else if (x1 + i * s1 == x2 && y1 + i * s2 == y2)
							return true;
					} else if (x1 + i * s1 == x2 && y1 + i * s2 == y2)
						return true;
				}

			}

		}

		return false;
	}

}
